חיפשו לראות הבנה כללית וידע במבני נתונים וסיבוכיות
שאלות מתוך הראיון
לממש alloc() ו- free()
תשובות
הוסף תשובה
|
לצפיה בתשובות
מאי 2021
מגדירים מבנה של מטהדאטא שמאפיין בלוק של זיכרון (להלן: הדר). בלוק יכול להיות מוקצה או משוחרר, ומכיל מצביע לבלוק הבא (שבתורו, יכול להיות מוקצה או משוחרר).
במימוש לדוגמא אפשר להקצות בשיטת first fit, ובמעבר לינארי על רשימת הבלוקים למצוא את הבלוק הראשון הפנוי שגדול מספיק.
malloc: במעבר על הרשימה המקושרת של ההדרים, מחפשים בלוק פנוי מספיק גדול ומסמנים אותו כ"תפוס" בהדר. ליוזר נחזיר מצביע לזיכרון עצמו שנמצא ברצף אחרי ההדר. אם מצאנו בלוק גדול יותר מהבלוק המבוקש אז נקרא לפונקציה split שיודעת לפצל בלוק גדול קיים לשני בלוקים קטנים (אחד עבור היוזר שביקש הקצאה, והשני עבור שאר הזיכרון הפנוי שנשאר כשארית).
free: נסמן את הבלוק כפנוי ונקרא לפונקציה merge שיודעת לאחד בלוקים פנויים עוקבים.
שיטה יותר טובה למימוש היא Best fit, ובשיטה זו נחפש את הבלוק הגדול מספיק הכי קטן. כמו כן, בכל מימוש שלא כולל relocation של בלוקים, עשויה להיות בעיה של External Fragmangtation כלומר, יוזר עשוי לבקש בלוק ויהיה מספיק זיכרון פנוי אבל לא ברצף ולכן ההקצאה תיכשל.
2 ראיונות טכניים, ראיון עם ראש צוות, ראיון hr.
מראיינים נחמדים, היתה אוירה טובה.
שאלות מתוך הראיון
- לממש תור בעזרת מחסנית.
- serialize \ deserialize עץ בינארי בין תהליכים.
- לממש design pattern של iterator
- לתת מימוש ספציפי לiterator עבור עץ בינארי
עוסקת בפיתוח, תכנות, שיווק ומתן זיכיונות למערכות הפעלה למחשבים, פתרונות תוכנה למגזר הפרטי והעסקי ומגוון פלטפורמות משולבות חומרה ותוכנה. בתחום המוצרים ללקוחות משווקת החברה מערכות הפעלה לשרתים, מחשבים אישיים ומחשבי כף יד.